The present invention relates to engine control modules that write data to a EEPROM.
Many electronic devices use Electrically Erasable Programmable Read Only Memory (EEPROM) for storing computer programs and data. EEPROMs are an economical and flexible memory medium that have been widely accepted and are extensively used in many electronic devices.
One EEPROM application is in an engine control module to store computer programs, engine calibration data, and to accumulate data on engine operation and faults. One example of this application of an EEPROM chip may be found in Applicant""s DDEC series of engine controllers.
One problem associated with EEPROM chips is that they have a life measured by the number of times data is written to specific cells in the EEPROM chip. The EEPROM chip itself may fail. Software has been developed to monitor EEPROM operation for the purpose of determining whether a particular cell or cells of the EEPROM are worn out. This software is not generally capable of indicating whether the entire EEPROM chip has failed. If a chip is not working, some monitoring software may indicate that all of the cells are bad requiring rewrites for every page. A page of data to be written in the EEPROM may be of varying byte sizes, for example 32 bytes or 128 bytes, that are all written at one time. The time required to rewrite over and over each page until the EEPROM runs out of space may take extremely long, for example, 10 to 30 minutes. Resuming normal operation of the controller may be delayed after engine shutdown until the engine shutdown data is written to the EEPROM which prevents an operator from restarting the engine during this time.
In some instances, the EEPROM chip may appear to be functioning while no data is actually being stored in it. During power down of an engine, the failure of the EEPROM to accept the writing of data delays the ECM power down. In accordance with normal ECM operation, after the ignition is turned off, all data must be stored before the ECM can power down. The operator in this situation may lose all of the engine shutdown data and would also be prevented from restarting the engine during this time. In addition, the system is prevented from storing fault information due to the inability of the EEPROM to store information.
These and other problems and disadvantages associated with prior art EEPROM based data logging systems for engine control modules is addressed by Applicant""s invention as summarized below.
According to the present invention, a method is provided for limiting engine control delays caused by an inability of an electronically erasable programmable read-only memory (EEPROM) to store engine shutdown data upon engine shutdown. An engine controller has an operational mode when the engine is operating and a low power mode when the engine is shutdown. The method includes the step of detecting a shutdown condition when the engine controller is in the operational mode. For example, the engine controller may receive a request to shutdown the engine and switch to a low power mode by turning off the ignition switch. After detecting a shutdown command, a timer is enabled that is set to a predetermined time interval. Engine shutdown data is then written by the engine controller to the EEPROM. The controller checks as to whether the engine shutdown data was successfully written to the EEPROM before the predetermined time interval set by the timer expires. If the predetermined time interval expires, the engine controller will automatically terminate the data write operation and switch the engine control module to its low power mode.
According to another aspect of the invention, in addition to having a timer set to a predetermined interval, a counter may be provided that is incremented each time an unsuccessful attempt to write the data to EEPROM occurs. The engine controller generates a fault message when the counter exceeds a predetermined number of unsuccessful writing steps. The fault message is logged in a second nonvolatile memory storage device (other than the failed EEPROM) such as a flash ram device to report that the EEPROM is non-operational for subsequent servicing operations.
According to another aspect of the invention, a method is provided for limiting engine control delays in an internal combustion engine having an EEPROM in which a plurality of sets of engine shutdown data are stored. Delays caused by the inability of the EEPROM to store the sets of engine shutdown data are limited to permit the engine controller to be switched from an operational mode to a low power mode. When the engine controller receives a request to shutdown the engine, the engine controller writes one of the sets of engine shutdown data as required by the engine controller to the EEPROM to create a stored set of engine shutdown data. The next step in the process is to determine whether the writing step was unsuccessful by comparing the set of engine shutdown data to the stored set of engine shutdown data. If so, a counter is incremented and the controller determines whether the counter has exceeded a predetermined limit. If the predetermined limit has been exceeded, a fault message may be generated. If the counter has not exceeded the predetermined number, the writing step is repeated. If the counter has exceeded the predetermined number, the engine controller automatically terminates the data write operation and switches the engine control module to a low power mode.
Alternatively, if the writing step was successful, the counter is reset and it is then determined whether all sets of engine shutdown data have been recorded. If all sets of data have not been stored, the writing step is repeated. If all sets of engine shutdown data have been stored, the engine control module is switched to its low power mode. The above process may also include the use of a timer that is set to a predetermined time interval. If so, the process also includes the step of determining whether writing of the engine shutdown data was completed before expiration of the predetermined time interval.
The present invention may also be characterized as a method of providing engine control with engine operation data logging in an EEPROM. The method includes the steps of actuating an ignition switch to initiate engine controller operation. The system enables engine shutdown criteria in the engine controller. The system then determines whether the ignition switch is turned off and whether engine shutdown criteria have been met that would enable the system to generate a signal to stop the engine. As the controller waits for the engine to stop and other ignition off features to be completed, data is written to the EEPROM. A determination is made as to whether the data has been successfully written into the EEPROM. A counter is incremented if the data is not successfully written to the EEPROM to record a value representative of the number of unsuccessful attempts to write to the EEPROM memory. A fault message is generated when the value representative of unsuccessful attempts to write in EEPROM memory exceeds the predetermined value. If so, a fault message is stored in non-volatile memory and the engine control module is permitted to switch to a low power mode.
The method may also include further steps of initiating an EEPROM timer having a predetermined time period after the step of waiting for the engine to stop. The system determines whether the engine shutdown data writing step was completed before the predetermined time interval expires. The data write operation is automatically terminated and the engine control module is switched to a low power mode upon expiration of the predetermined time interval.
Another aspect of the method of the invention relates to controlling an internal combustion engine having an engine controller and an EEPROM with a plurality of cells for storing data. The system detects a gross failure of the memory when the controller attempts to write to the memory upon engine shutdown before entering a low power mode. The method comprises detecting an engine shutdown condition wherein the controller receives a request to shutdown the engine and switch to the low power mode. The controller executes a write command wherein the controller attempts to write a block of data to the memory in a specific block of cells that is stored as a stored block of data. The controller reads the stored block of data stored in the specified block of cells and compares the block of data to be stored with the stored block of data to confirm that the write command was successful. The system then determines whether the stored block of data is different from the block of data intended to be stored thereby confirming that the write command was unsuccessful and re-executing the write command subject to a xe2x80x9cre-attempt limitxe2x80x9d of write commands. The re-attempt limit may be established by a timer set to a predetermined time delay or may be set by a counter that counts the number of failed attempts until a predetermined number of failed write commands is reached. Upon reaching the re-attempt limit of write commands set by the timer or counter, it is determined that there was a gross failure of the memory.
According to other aspects of the method, the re-attempt limit may be set by both a timer and a counter wherein either exceeding the predetermined time limit or exceeding the number of failed attempts may cause the engine controller to indicate that there has been a gross failure of the memory. Upon determining that there has been a gross failure in memory, the system preferably records a fault message in non-volatile memory and also switches the controller to its low power mode.